﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using EGuayas.Web.Resources;
using EntGuayasSLA.BL.Listas;
using Ext.Net;
using EntGuayasSLA.BL;
using System.IO;
using System.Text;
using EntGuayasSLA.BL.Licenciamiento;
using EGuayas.Web.Usuario;

namespace EGuayas.Web.Auditoria.Admin.Cumplimiento
{
    public partial class pgNuevoExpediente : pgBase
    {
        #region Set-Session
        #endregion Set-Session
       
        
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
            if (!X.IsAjaxRequest)
            {
                string AuditoriaIdTmp  = "";
                string ExpedienteIdTmp = Request["exp_id"];

                SetSessionPage setSession = new SetSessionPage(SessionPage.PageGestionAdminAudCumpEdit, Request["evt"]);
                Expediente expediente = Expediente.GetEditableRoot(Guid.Parse(ExpedienteIdTmp));
                btnSiguiente.Hide();
                //btnAnterior.Hide();
                switch (GetSessionPage.GetSession(SessionPage.PageGestionAdminAudCumpEdit))
                {
                    case Valores.PageEvento_Nuevo:
                        AuditoriaIdTmp = Request["exa_id"];
                        this.txtNombre.Text = expediente.Nombre;
                        this.txtDescrip.Text = expediente.Descripcion;
                        this.dtFechaInicio.SetValue(DateTime.Now);
                        this.dtFechaInicio.ReadOnly = true;
                        this.hddIdAudCum.SetValue("");
                        break;
                    case Valores.PageEvento_Modificar:
                        AuditoriaIdTmp = Request["pma_id"];
                        AuditoriaCumplimiento audCump = AuditoriaCumplimiento.GetEditableRoot(Guid.Parse(AuditoriaIdTmp));
                        frmAuditoria.SetValues(new
                        {
                            Nombre = expediente.Nombre,
                            Descrip = expediente.Descripcion,
                            Periodo = audCump.Periodo,
                            FechaInicio = audCump.FechaInicio.ToShortDateString(),
                            FechaFin = audCump.FechaFin.ToShortDateString()
                        });
                        this.hddIdAudCum.SetValue(audCump.Id.ToString());
                     
                        break;
                    default:
                        btnSave.Disable();
                        break;
                }
                  
               }//if (!X.IsAjaxRequest)
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
        }

        /// <summary>
        /// Grabar información de expediente
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnSave_Click(object sender, DirectEventArgs e)
        {
            try
            {
              
                string AuditoriaIdTmp = "";
                string stringMsg = "";
                string gridJson = e.ExtraParams["prmValues"];
                var dataItem = JSON.Deserialize<Dictionary<string, string>>(gridJson);
                var iCountFases = 0;
                AuditoriaCumplimiento audCump = null;
                switch (GetSessionPage.GetSession(SessionPage.PageGestionAdminAudCumpEdit))
                {
                    case Valores.PageEvento_Modificar:
                        AuditoriaIdTmp = Request["pma_id"];
                        audCump = AuditoriaCumplimiento.GetEditableRoot(Guid.Parse(AuditoriaIdTmp));

                        stringMsg = "Auditoria de Cumplimiento [" + audCump.Periodo + "] modificada";
                        break;
                    case Valores.PageEvento_Nuevo:
                        AuditoriaIdTmp = Request["exa_id"];
                        audCump = AuditoriaCumplimiento.NewEditableRoot();
                        audCump.Id = System.Guid.NewGuid();
                        audCump.ExpedienteAuditoriaId = AuditoriaIdTmp;
                        stringMsg = "Nueva Auditoria de Cumplimiento creada";
                        break;
                }

                audCump.Periodo = dataItem["Periodo"];
                audCump.FechaInicio = DateTime.Parse(dataItem["FechaInicio"]);
                audCump.FechaFin = DateTime.Parse(dataItem["FechaFin"]);
                audCump.PlanAccion = Valores.Codigo_CHAR_No;
                audCump.Save();
                if (GetSessionPage.GetSession(SessionPage.PageGestionAdminAudCumpEdit) == Valores.PageEvento_Nuevo)
                {
                    FaseAuditoriaCumplimientoLista itemsFasesCheck = FaseAuditoriaCumplimientoLista.GetFaseAuditoriaCumplimientoLista();
                    foreach (FaseAuditoriaCumplimientoInfo row in itemsFasesCheck)
                    {

                        FaseAuditoria objFase = FaseAuditoria.NewEditableRoot();
                        objFase.Id = System.Guid.NewGuid();
                        objFase.FaseId = row.FaseId.ToString();
                        objFase.AuditoriaCumplimientoId = audCump.Id.ToString();
                        objFase.FechaInicial = DateTime.Now;
                        objFase.EstadoFase = (iCountFases == 0) ? Valores.Codigo_Estado_Fase_Inicial : Valores.Codigo_Estado_Fase_Creado;
                        objFase.Save();
                        iCountFases = iCountFases + 1;
                    }
                }
               

                //audCump.FechaAprobacion=DateTime.Parse(dataItem[""]);
                //audCump.FechaProrroga=DateTime.Parse(dataItem[""]);
                btnSave.Disable();
                //Metodo de  Handler = "window.parent.App.CloseNuevoExpediente();" invocado desde [~/Auditoria/admin/Monitoreo/pgAdmAM.aspx]
             
                X.Msg.Show(new MessageBoxConfig
                {
                    Buttons = MessageBox.Button.OK,
                    Icon = MessageBox.Icon.INFO,
                    Title = Titulos.TituloAviso,
                    Message = string.Format("{0}", stringMsg),
                    Handler = "window.parent.App.CloseNuevoExpediente();"
                });
                //this.panContenedorAuditoria.ActiveIndex = 1;
                //Almacenar en session Id Auditoria de cumpliento Actual
                //wucFases obj = (wucFases)this.uc_fases_001.UserControls[0];
                //obj.EnabledBtnNuevoFase(audCump.Id.ToString());
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
        }

        protected void OnLoadFasesAdded(object sender, ComponentAddedEventArgs e)
        {
            try
            {
                Ext.Net.Panel panel = (Ext.Net.Panel)e.Control;
                //TODO: revisar esta asignacion
                SetCustomConfigWucAud(panel, "", this.hddIdAudCum.Value.ToString(), SessionPage.PageGestionAdminAudCumpEdit);
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
            
        }



    }
}